함수형 패러다임은 개발자의 사고 모델을 '상태가 있는 상자'를 업데이트하는 것에서 수학적 변환을 적용하는 것으로 불변 값에 적용하는 것으로 바꿉니다. 엘릭서에서는 데이터가 결코 변경되지 않습니다. 오직 새로운 형태로 재탄생될 뿐입니다.
1. 수학적 주장
당신이 $x = a + 1$라고 쓸 때, 결과를 변수에 할당하는 것이 아닙니다. 오히려 단순히 주장하고 있는 것뿐입니다 표현식 $x$와 $a + 1$가 동일한 값을 가진다는 것입니다. 이것은 특정 맥락에서 $x$가 고정된 값을 나타내는 대수 논리와 일치합니다.
2. 불변성의 보장
엘릭서에서는 모든 값은 불변입니다데이터는 생성된 후에는 수정될 수 없습니다. 이로 인해 함수가 전역 변수나 전달된 객체를 예기치 않게 변경할 수 있는 '사이드 이펙트'가 제거되며, 코드가 예측 가능하고 스레드 안전하게 유지됩니다.
3. 변환과 변경의 차이
우리는 데이터를 바로바로 수정하지 않습니다. 엘릭서에는 할당이 없으며, 대신 값을 패턴에 맞추려 시도합니다값을 '변경'하려면 원본 데이터를 함수를 통해 통과시켜 완전히 새로운 버전을 만들어냅니다.
iex> name = "elixir"
"elixir"
iex> cap_name = String.capitalize name
"Elixir"
iex> name
"elixir" (아직도 그대로야!)
"elixir"
iex> cap_name = String.capitalize name
"Elixir"
iex> name
"elixir" (아직도 그대로야!)
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>